{
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# Logistic Regression Classification Part 4"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import pandas as pd\n",
        "\n",
        "import warnings\n",
        "warnings.filterwarnings(\"ignore\")\n",
        "\n",
        "# yahoo finance is used to fetch data \n",
        "import yfinance as yf\n",
        "yf.pdr_override()"
      ],
      "outputs": [],
      "execution_count": 1,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false,
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:53.177Z",
          "iopub.execute_input": "2022-08-21T01:34:53.183Z",
          "shell.execute_reply": "2022-08-21T01:34:53.097Z",
          "iopub.status.idle": "2022-08-21T01:34:53.189Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# input\n",
        "symbol = 'AMD'\n",
        "start = '2014-01-01'\n",
        "end = '2018-08-27'\n",
        "\n",
        "# Read data \n",
        "dataset = yf.download(symbol,start,end)\n",
        "\n",
        "# View Columns\n",
        "dataset.head()"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[*********************100%***********************]  1 of 1 completed\n"
          ]
        },
        {
          "output_type": "execute_result",
          "execution_count": 2,
          "data": {
            "text/plain": "            Open  High   Low  Close  Adj Close    Volume\nDate                                                    \n2014-01-02  3.85  3.98  3.84   3.95       3.95  20548400\n2014-01-03  3.98  4.00  3.88   4.00       4.00  22887200\n2014-01-06  4.01  4.18  3.99   4.13       4.13  42398300\n2014-01-07  4.19  4.25  4.11   4.18       4.18  42932100\n2014-01-08  4.23  4.26  4.14   4.18       4.18  30678700",
            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Open</th>\n      <th>High</th>\n      <th>Low</th>\n      <th>Close</th>\n      <th>Adj Close</th>\n      <th>Volume</th>\n    </tr>\n    <tr>\n      <th>Date</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2014-01-02</th>\n      <td>3.85</td>\n      <td>3.98</td>\n      <td>3.84</td>\n      <td>3.95</td>\n      <td>3.95</td>\n      <td>20548400</td>\n    </tr>\n    <tr>\n      <th>2014-01-03</th>\n      <td>3.98</td>\n      <td>4.00</td>\n      <td>3.88</td>\n      <td>4.00</td>\n      <td>4.00</td>\n      <td>22887200</td>\n    </tr>\n    <tr>\n      <th>2014-01-06</th>\n      <td>4.01</td>\n      <td>4.18</td>\n      <td>3.99</td>\n      <td>4.13</td>\n      <td>4.13</td>\n      <td>42398300</td>\n    </tr>\n    <tr>\n      <th>2014-01-07</th>\n      <td>4.19</td>\n      <td>4.25</td>\n      <td>4.11</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>42932100</td>\n    </tr>\n    <tr>\n      <th>2014-01-08</th>\n      <td>4.23</td>\n      <td>4.26</td>\n      <td>4.14</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>30678700</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 2,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false,
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:53.197Z",
          "iopub.execute_input": "2022-08-21T01:34:53.204Z",
          "iopub.status.idle": "2022-08-21T01:34:53.222Z",
          "shell.execute_reply": "2022-08-21T01:34:53.102Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Create more data\n",
        "dataset['Increase/Decrease'] = np.where(dataset['Volume'].shift(-1) > dataset['Volume'],1,0)\n",
        "dataset['Buy_Sell_on_Open'] = np.where(dataset['Open'].shift(-1) > dataset['Open'],1,0)\n",
        "dataset['Buy_Sell'] = np.where(dataset['Adj Close'].shift(-1) > dataset['Adj Close'],1,0)\n",
        "dataset['Return'] = dataset['Adj Close'].pct_change()\n",
        "dataset = dataset.dropna()\n",
        "dataset['Up_Down'] = np.where(dataset['Return'].shift(-1) > dataset['Return'],1,0)\n",
        "dataset.head()"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 3,
          "data": {
            "text/plain": "            Open  High   Low  Close  Adj Close    Volume  Increase/Decrease  \\\nDate                                                                          \n2014-01-03  3.98  4.00  3.88   4.00       4.00  22887200                  1   \n2014-01-06  4.01  4.18  3.99   4.13       4.13  42398300                  1   \n2014-01-07  4.19  4.25  4.11   4.18       4.18  42932100                  0   \n2014-01-08  4.23  4.26  4.14   4.18       4.18  30678700                  0   \n2014-01-09  4.20  4.23  4.05   4.09       4.09  30667600                  0   \n\n            Buy_Sell_on_Open  Buy_Sell    Return  Up_Down  \nDate                                                       \n2014-01-03                 1         1  0.012658        1  \n2014-01-06                 1         1  0.032500        0  \n2014-01-07                 1         0  0.012106        0  \n2014-01-08                 0         0  0.000000        0  \n2014-01-09                 0         1 -0.021531        1  ",
            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Open</th>\n      <th>High</th>\n      <th>Low</th>\n      <th>Close</th>\n      <th>Adj Close</th>\n      <th>Volume</th>\n      <th>Increase/Decrease</th>\n      <th>Buy_Sell_on_Open</th>\n      <th>Buy_Sell</th>\n      <th>Return</th>\n      <th>Up_Down</th>\n    </tr>\n    <tr>\n      <th>Date</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2014-01-03</th>\n      <td>3.98</td>\n      <td>4.00</td>\n      <td>3.88</td>\n      <td>4.00</td>\n      <td>4.00</td>\n      <td>22887200</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0.012658</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>2014-01-06</th>\n      <td>4.01</td>\n      <td>4.18</td>\n      <td>3.99</td>\n      <td>4.13</td>\n      <td>4.13</td>\n      <td>42398300</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0.032500</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2014-01-07</th>\n      <td>4.19</td>\n      <td>4.25</td>\n      <td>4.11</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>42932100</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0.012106</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2014-01-08</th>\n      <td>4.23</td>\n      <td>4.26</td>\n      <td>4.14</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>30678700</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0.000000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2014-01-09</th>\n      <td>4.20</td>\n      <td>4.23</td>\n      <td>4.05</td>\n      <td>4.09</td>\n      <td>4.09</td>\n      <td>30667600</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>-0.021531</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 3,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false,
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:53.230Z",
          "iopub.execute_input": "2022-08-21T01:34:53.236Z",
          "shell.execute_reply": "2022-08-21T01:34:53.108Z",
          "iopub.status.idle": "2022-08-21T01:34:53.246Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "dataset.shape"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 4,
          "data": {
            "text/plain": "(1170, 11)"
          },
          "metadata": {}
        }
      ],
      "execution_count": 4,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false,
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:53.257Z",
          "iopub.execute_input": "2022-08-21T01:34:53.264Z",
          "iopub.status.idle": "2022-08-21T01:34:53.273Z",
          "shell.execute_reply": "2022-08-21T01:34:53.135Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "dataset.info"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 5,
          "data": {
            "text/plain": "<bound method DataFrame.info of                  Open   High        Low      Close  Adj Close     Volume  \\\nDate                                                                       \n2014-01-03   3.980000   4.00   3.880000   4.000000   4.000000   22887200   \n2014-01-06   4.010000   4.18   3.990000   4.130000   4.130000   42398300   \n2014-01-07   4.190000   4.25   4.110000   4.180000   4.180000   42932100   \n2014-01-08   4.230000   4.26   4.140000   4.180000   4.180000   30678700   \n2014-01-09   4.200000   4.23   4.050000   4.090000   4.090000   30667600   \n...               ...    ...        ...        ...        ...        ...   \n2018-08-20  19.790001  20.08  19.350000  19.980000  19.980000   62983200   \n2018-08-21  19.980000  20.42  19.860001  20.400000  20.400000   55629000   \n2018-08-22  20.280001  20.92  20.209999  20.900000  20.900000   62002700   \n2018-08-23  21.190001  22.32  21.139999  22.290001  22.290001  113444100   \n2018-08-24  22.910000  24.00  22.670000  23.980000  23.980000  164328200   \n\n            Increase/Decrease  Buy_Sell_on_Open  Buy_Sell    Return  Up_Down  \nDate                                                                          \n2014-01-03                  1                 1         1  0.012658        1  \n2014-01-06                  1                 1         1  0.032500        0  \n2014-01-07                  0                 1         0  0.012106        0  \n2014-01-08                  0                 0         0  0.000000        0  \n2014-01-09                  0                 0         1 -0.021531        1  \n...                       ...               ...       ...       ...      ...  \n2018-08-20                  0                 1         1  0.010622        1  \n2018-08-21                  1                 1         1  0.021021        1  \n2018-08-22                  1                 1         1  0.024510        1  \n2018-08-23                  1                 1         1  0.066507        1  \n2018-08-24                  0                 0         0  0.075819        0  \n\n[1170 rows x 11 columns]>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 5,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:53.282Z",
          "iopub.execute_input": "2022-08-21T01:34:53.288Z",
          "iopub.status.idle": "2022-08-21T01:34:53.300Z",
          "shell.execute_reply": "2022-08-21T01:34:53.145Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "dataset.describe()"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 6,
          "data": {
            "text/plain": "              Open         High          Low        Close    Adj Close  \\\ncount  1170.000000  1170.000000  1170.000000  1170.000000  1170.000000   \nmean      7.001342     7.146650     6.855419     7.002803     7.002803   \nstd       4.855620     4.953517     4.754049     4.861608     4.861608   \nmin       1.620000     1.690000     1.610000     1.620000     1.620000   \n25%       2.710000     2.780000     2.660000     2.702500     2.702500   \n50%       4.250000     4.350000     4.175000     4.275000     4.275000   \n75%      11.572500    11.775000    11.307500    11.550000    11.550000   \nmax      22.910000    24.000000    22.670000    23.980000    23.980000   \n\n             Volume  Increase/Decrease  Buy_Sell_on_Open     Buy_Sell  \\\ncount  1.170000e+03        1170.000000       1170.000000  1170.000000   \nmean   3.763371e+07           0.454701          0.505128     0.499145   \nstd    3.355409e+07           0.498157          0.500188     0.500213   \nmin    0.000000e+00           0.000000          0.000000     0.000000   \n25%    1.308128e+07           0.000000          0.000000     0.000000   \n50%    2.900380e+07           0.000000          1.000000     0.000000   \n75%    5.059335e+07           1.000000          1.000000     1.000000   \nmax    2.683365e+08           1.000000          1.000000     1.000000   \n\n            Return      Up_Down  \ncount  1170.000000  1170.000000  \nmean      0.002241     0.490598  \nstd       0.038113     0.500125  \nmin      -0.242291     0.000000  \n25%      -0.015964     0.000000  \n50%       0.000353     0.000000  \n75%       0.018227     1.000000  \nmax       0.522901     1.000000  ",
            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Open</th>\n      <th>High</th>\n      <th>Low</th>\n      <th>Close</th>\n      <th>Adj Close</th>\n      <th>Volume</th>\n      <th>Increase/Decrease</th>\n      <th>Buy_Sell_on_Open</th>\n      <th>Buy_Sell</th>\n      <th>Return</th>\n      <th>Up_Down</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>count</th>\n      <td>1170.000000</td>\n      <td>1170.000000</td>\n      <td>1170.000000</td>\n      <td>1170.000000</td>\n      <td>1170.000000</td>\n      <td>1.170000e+03</td>\n      <td>1170.000000</td>\n      <td>1170.000000</td>\n      <td>1170.000000</td>\n      <td>1170.000000</td>\n      <td>1170.000000</td>\n    </tr>\n    <tr>\n      <th>mean</th>\n      <td>7.001342</td>\n      <td>7.146650</td>\n      <td>6.855419</td>\n      <td>7.002803</td>\n      <td>7.002803</td>\n      <td>3.763371e+07</td>\n      <td>0.454701</td>\n      <td>0.505128</td>\n      <td>0.499145</td>\n      <td>0.002241</td>\n      <td>0.490598</td>\n    </tr>\n    <tr>\n      <th>std</th>\n      <td>4.855620</td>\n      <td>4.953517</td>\n      <td>4.754049</td>\n      <td>4.861608</td>\n      <td>4.861608</td>\n      <td>3.355409e+07</td>\n      <td>0.498157</td>\n      <td>0.500188</td>\n      <td>0.500213</td>\n      <td>0.038113</td>\n      <td>0.500125</td>\n    </tr>\n    <tr>\n      <th>min</th>\n      <td>1.620000</td>\n      <td>1.690000</td>\n      <td>1.610000</td>\n      <td>1.620000</td>\n      <td>1.620000</td>\n      <td>0.000000e+00</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>-0.242291</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>25%</th>\n      <td>2.710000</td>\n      <td>2.780000</td>\n      <td>2.660000</td>\n      <td>2.702500</td>\n      <td>2.702500</td>\n      <td>1.308128e+07</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>-0.015964</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>50%</th>\n      <td>4.250000</td>\n      <td>4.350000</td>\n      <td>4.175000</td>\n      <td>4.275000</td>\n      <td>4.275000</td>\n      <td>2.900380e+07</td>\n      <td>0.000000</td>\n      <td>1.000000</td>\n      <td>0.000000</td>\n      <td>0.000353</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>75%</th>\n      <td>11.572500</td>\n      <td>11.775000</td>\n      <td>11.307500</td>\n      <td>11.550000</td>\n      <td>11.550000</td>\n      <td>5.059335e+07</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n      <td>0.018227</td>\n      <td>1.000000</td>\n    </tr>\n    <tr>\n      <th>max</th>\n      <td>22.910000</td>\n      <td>24.000000</td>\n      <td>22.670000</td>\n      <td>23.980000</td>\n      <td>23.980000</td>\n      <td>2.683365e+08</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n      <td>0.522901</td>\n      <td>1.000000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 6,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:53.309Z",
          "iopub.execute_input": "2022-08-21T01:34:53.315Z",
          "iopub.status.idle": "2022-08-21T01:34:53.330Z",
          "shell.execute_reply": "2022-08-21T01:34:53.474Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "dataset.corr()"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 7,
          "data": {
            "text/plain": "                       Open      High       Low     Close  Adj Close  \\\nOpen               1.000000  0.999489  0.999445  0.998828   0.998828   \nHigh               0.999489  1.000000  0.999397  0.999530   0.999530   \nLow                0.999445  0.999397  1.000000  0.999503   0.999503   \nClose              0.998828  0.999530  0.999503  1.000000   1.000000   \nAdj Close          0.998828  0.999530  0.999503  1.000000   1.000000   \nVolume             0.666151  0.675334  0.657002  0.665702   0.665702   \nIncrease/Decrease  0.016132  0.012193  0.021328  0.017975   0.017975   \nBuy_Sell_on_Open   0.026993  0.041462  0.041653  0.053563   0.053563   \nBuy_Sell           0.050314  0.049388  0.049223  0.048270   0.048270   \nReturn             0.024533  0.042678  0.040212  0.057180   0.057180   \nUp_Down            0.009736  0.000512 -0.000198 -0.008278  -0.008278   \n\n                     Volume  Increase/Decrease  Buy_Sell_on_Open  Buy_Sell  \\\nOpen               0.666151           0.016132          0.026993  0.050314   \nHigh               0.675334           0.012193          0.041462  0.049388   \nLow                0.657002           0.021328          0.041653  0.049223   \nClose              0.665702           0.017975          0.053563  0.048270   \nAdj Close          0.665702           0.017975          0.053563  0.048270   \nVolume             1.000000          -0.202641          0.049329  0.026404   \nIncrease/Decrease -0.202641           1.000000         -0.012799  0.063354   \nBuy_Sell_on_Open   0.049329          -0.012799          1.000000  0.078654   \nBuy_Sell           0.026404           0.063354          0.078654  1.000000   \nReturn             0.067772           0.019902          0.509252 -0.012213   \nUp_Down           -0.008714           0.027474         -0.304150  0.518009   \n\n                     Return   Up_Down  \nOpen               0.024533  0.009736  \nHigh               0.042678  0.000512  \nLow                0.040212 -0.000198  \nClose              0.057180 -0.008278  \nAdj Close          0.057180 -0.008278  \nVolume             0.067772 -0.008714  \nIncrease/Decrease  0.019902  0.027474  \nBuy_Sell_on_Open   0.509252 -0.304150  \nBuy_Sell          -0.012213  0.518009  \nReturn             1.000000 -0.458735  \nUp_Down           -0.458735  1.000000  ",
            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Open</th>\n      <th>High</th>\n      <th>Low</th>\n      <th>Close</th>\n      <th>Adj Close</th>\n      <th>Volume</th>\n      <th>Increase/Decrease</th>\n      <th>Buy_Sell_on_Open</th>\n      <th>Buy_Sell</th>\n      <th>Return</th>\n      <th>Up_Down</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>Open</th>\n      <td>1.000000</td>\n      <td>0.999489</td>\n      <td>0.999445</td>\n      <td>0.998828</td>\n      <td>0.998828</td>\n      <td>0.666151</td>\n      <td>0.016132</td>\n      <td>0.026993</td>\n      <td>0.050314</td>\n      <td>0.024533</td>\n      <td>0.009736</td>\n    </tr>\n    <tr>\n      <th>High</th>\n      <td>0.999489</td>\n      <td>1.000000</td>\n      <td>0.999397</td>\n      <td>0.999530</td>\n      <td>0.999530</td>\n      <td>0.675334</td>\n      <td>0.012193</td>\n      <td>0.041462</td>\n      <td>0.049388</td>\n      <td>0.042678</td>\n      <td>0.000512</td>\n    </tr>\n    <tr>\n      <th>Low</th>\n      <td>0.999445</td>\n      <td>0.999397</td>\n      <td>1.000000</td>\n      <td>0.999503</td>\n      <td>0.999503</td>\n      <td>0.657002</td>\n      <td>0.021328</td>\n      <td>0.041653</td>\n      <td>0.049223</td>\n      <td>0.040212</td>\n      <td>-0.000198</td>\n    </tr>\n    <tr>\n      <th>Close</th>\n      <td>0.998828</td>\n      <td>0.999530</td>\n      <td>0.999503</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n      <td>0.665702</td>\n      <td>0.017975</td>\n      <td>0.053563</td>\n      <td>0.048270</td>\n      <td>0.057180</td>\n      <td>-0.008278</td>\n    </tr>\n    <tr>\n      <th>Adj Close</th>\n      <td>0.998828</td>\n      <td>0.999530</td>\n      <td>0.999503</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n      <td>0.665702</td>\n      <td>0.017975</td>\n      <td>0.053563</td>\n      <td>0.048270</td>\n      <td>0.057180</td>\n      <td>-0.008278</td>\n    </tr>\n    <tr>\n      <th>Volume</th>\n      <td>0.666151</td>\n      <td>0.675334</td>\n      <td>0.657002</td>\n      <td>0.665702</td>\n      <td>0.665702</td>\n      <td>1.000000</td>\n      <td>-0.202641</td>\n      <td>0.049329</td>\n      <td>0.026404</td>\n      <td>0.067772</td>\n      <td>-0.008714</td>\n    </tr>\n    <tr>\n      <th>Increase/Decrease</th>\n      <td>0.016132</td>\n      <td>0.012193</td>\n      <td>0.021328</td>\n      <td>0.017975</td>\n      <td>0.017975</td>\n      <td>-0.202641</td>\n      <td>1.000000</td>\n      <td>-0.012799</td>\n      <td>0.063354</td>\n      <td>0.019902</td>\n      <td>0.027474</td>\n    </tr>\n    <tr>\n      <th>Buy_Sell_on_Open</th>\n      <td>0.026993</td>\n      <td>0.041462</td>\n      <td>0.041653</td>\n      <td>0.053563</td>\n      <td>0.053563</td>\n      <td>0.049329</td>\n      <td>-0.012799</td>\n      <td>1.000000</td>\n      <td>0.078654</td>\n      <td>0.509252</td>\n      <td>-0.304150</td>\n    </tr>\n    <tr>\n      <th>Buy_Sell</th>\n      <td>0.050314</td>\n      <td>0.049388</td>\n      <td>0.049223</td>\n      <td>0.048270</td>\n      <td>0.048270</td>\n      <td>0.026404</td>\n      <td>0.063354</td>\n      <td>0.078654</td>\n      <td>1.000000</td>\n      <td>-0.012213</td>\n      <td>0.518009</td>\n    </tr>\n    <tr>\n      <th>Return</th>\n      <td>0.024533</td>\n      <td>0.042678</td>\n      <td>0.040212</td>\n      <td>0.057180</td>\n      <td>0.057180</td>\n      <td>0.067772</td>\n      <td>0.019902</td>\n      <td>0.509252</td>\n      <td>-0.012213</td>\n      <td>1.000000</td>\n      <td>-0.458735</td>\n    </tr>\n    <tr>\n      <th>Up_Down</th>\n      <td>0.009736</td>\n      <td>0.000512</td>\n      <td>-0.000198</td>\n      <td>-0.008278</td>\n      <td>-0.008278</td>\n      <td>-0.008714</td>\n      <td>0.027474</td>\n      <td>-0.304150</td>\n      <td>0.518009</td>\n      <td>-0.458735</td>\n      <td>1.000000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 7,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:53.339Z",
          "iopub.execute_input": "2022-08-21T01:34:53.346Z",
          "iopub.status.idle": "2022-08-21T01:34:53.361Z",
          "shell.execute_reply": "2022-08-21T01:34:53.478Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "dataset = dataset.drop('Return', axis=1)\n",
        "dataset.head()"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 8,
          "data": {
            "text/plain": "            Open  High   Low  Close  Adj Close    Volume  Increase/Decrease  \\\nDate                                                                          \n2014-01-03  3.98  4.00  3.88   4.00       4.00  22887200                  1   \n2014-01-06  4.01  4.18  3.99   4.13       4.13  42398300                  1   \n2014-01-07  4.19  4.25  4.11   4.18       4.18  42932100                  0   \n2014-01-08  4.23  4.26  4.14   4.18       4.18  30678700                  0   \n2014-01-09  4.20  4.23  4.05   4.09       4.09  30667600                  0   \n\n            Buy_Sell_on_Open  Buy_Sell  Up_Down  \nDate                                             \n2014-01-03                 1         1        1  \n2014-01-06                 1         1        0  \n2014-01-07                 1         0        0  \n2014-01-08                 0         0        0  \n2014-01-09                 0         1        1  ",
            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Open</th>\n      <th>High</th>\n      <th>Low</th>\n      <th>Close</th>\n      <th>Adj Close</th>\n      <th>Volume</th>\n      <th>Increase/Decrease</th>\n      <th>Buy_Sell_on_Open</th>\n      <th>Buy_Sell</th>\n      <th>Up_Down</th>\n    </tr>\n    <tr>\n      <th>Date</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2014-01-03</th>\n      <td>3.98</td>\n      <td>4.00</td>\n      <td>3.88</td>\n      <td>4.00</td>\n      <td>4.00</td>\n      <td>22887200</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>2014-01-06</th>\n      <td>4.01</td>\n      <td>4.18</td>\n      <td>3.99</td>\n      <td>4.13</td>\n      <td>4.13</td>\n      <td>42398300</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2014-01-07</th>\n      <td>4.19</td>\n      <td>4.25</td>\n      <td>4.11</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>42932100</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2014-01-08</th>\n      <td>4.23</td>\n      <td>4.26</td>\n      <td>4.14</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>30678700</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2014-01-09</th>\n      <td>4.20</td>\n      <td>4.23</td>\n      <td>4.05</td>\n      <td>4.09</td>\n      <td>4.09</td>\n      <td>30667600</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 8,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:53.370Z",
          "iopub.execute_input": "2022-08-21T01:34:53.376Z",
          "shell.execute_reply": "2022-08-21T01:34:53.482Z",
          "iopub.status.idle": "2022-08-21T01:34:53.390Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "X = dataset.drop(['Up_Down', 'Close'], axis=1)  \n",
        "y = dataset['Up_Down'] "
      ],
      "outputs": [],
      "execution_count": 9,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:53.400Z",
          "iopub.execute_input": "2022-08-21T01:34:53.407Z",
          "iopub.status.idle": "2022-08-21T01:34:53.417Z",
          "shell.execute_reply": "2022-08-21T01:34:53.487Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.feature_selection import SelectKBest\n",
        "from sklearn.feature_selection import chi2"
      ],
      "outputs": [],
      "execution_count": 10,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false,
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:53.427Z",
          "iopub.execute_input": "2022-08-21T01:34:53.433Z",
          "iopub.status.idle": "2022-08-21T01:34:54.117Z",
          "shell.execute_reply": "2022-08-21T01:34:54.107Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "best_features= SelectKBest(score_func=chi2, k=3)\n",
        "fit= best_features.fit(X,y)\n"
      ],
      "outputs": [],
      "execution_count": 11,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:54.126Z",
          "iopub.execute_input": "2022-08-21T01:34:54.131Z",
          "iopub.status.idle": "2022-08-21T01:34:54.142Z",
          "shell.execute_reply": "2022-08-21T01:34:54.457Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "df_scores= pd.DataFrame(fit.scores_)\n",
        "df_columns= pd.DataFrame(X.columns)"
      ],
      "outputs": [],
      "execution_count": 12,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false,
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:54.151Z",
          "iopub.execute_input": "2022-08-21T01:34:54.158Z",
          "iopub.status.idle": "2022-08-21T01:34:54.169Z",
          "shell.execute_reply": "2022-08-21T01:34:54.464Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "features_scores= pd.concat([df_columns, df_scores], axis=1)\n",
        "features_scores.columns= ['Features', 'Score']\n",
        "features_scores.sort_values(by = 'Score')"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 13,
          "data": {
            "text/plain": "            Features         Score\n2                Low  1.511257e-04\n1               High  1.052673e-03\n3          Adj Close  2.703764e-01\n0               Open  3.731772e-01\n5  Increase/Decrease  4.815789e-01\n6   Buy_Sell_on_Open  5.356183e+01\n7           Buy_Sell  1.572433e+02\n4             Volume  2.655581e+06",
            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Features</th>\n      <th>Score</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2</th>\n      <td>Low</td>\n      <td>1.511257e-04</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>High</td>\n      <td>1.052673e-03</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>Adj Close</td>\n      <td>2.703764e-01</td>\n    </tr>\n    <tr>\n      <th>0</th>\n      <td>Open</td>\n      <td>3.731772e-01</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>Increase/Decrease</td>\n      <td>4.815789e-01</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>Buy_Sell_on_Open</td>\n      <td>5.356183e+01</td>\n    </tr>\n    <tr>\n      <th>7</th>\n      <td>Buy_Sell</td>\n      <td>1.572433e+02</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>Volume</td>\n      <td>2.655581e+06</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 13,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false,
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:54.178Z",
          "iopub.execute_input": "2022-08-21T01:34:54.183Z",
          "iopub.status.idle": "2022-08-21T01:34:54.196Z",
          "shell.execute_reply": "2022-08-21T01:34:54.476Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "X = dataset[['Buy_Sell_on_Open', 'Buy_Sell', 'Volume']]  # the top 3 features\n",
        "y = dataset['Up_Down']   # the target output"
      ],
      "outputs": [],
      "execution_count": 14,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:54.206Z",
          "iopub.execute_input": "2022-08-21T01:34:54.212Z",
          "iopub.status.idle": "2022-08-21T01:34:54.221Z",
          "shell.execute_reply": "2022-08-21T01:34:54.481Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn import model_selection\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "from sklearn.model_selection import train_test_split\n",
        "\n",
        "X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.4,random_state=100)"
      ],
      "outputs": [],
      "execution_count": 15,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false,
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:54.229Z",
          "iopub.execute_input": "2022-08-21T01:34:54.236Z",
          "iopub.status.idle": "2022-08-21T01:34:54.244Z",
          "shell.execute_reply": "2022-08-21T01:34:54.484Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "model = LogisticRegression()\n",
        "model.fit(X_train,y_train)"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 16,
          "data": {
            "text/plain": "LogisticRegression()"
          },
          "metadata": {}
        }
      ],
      "execution_count": 16,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false,
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:54.254Z",
          "iopub.execute_input": "2022-08-21T01:34:54.259Z",
          "iopub.status.idle": "2022-08-21T01:34:54.271Z",
          "shell.execute_reply": "2022-08-21T01:34:54.487Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "y_pred= model.predict(X_test)\n",
        "print (X_test) #test dataset\n",
        "print (y_pred) #predicted values"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "            Buy_Sell_on_Open  Buy_Sell    Volume\n",
            "Date                                            \n",
            "2014-11-24                 1         0  12293900\n",
            "2014-07-02                 1         0  20486500\n",
            "2016-02-16                 0         1  11853400\n",
            "2017-03-20                 1         0  91565600\n",
            "2016-05-11                 1         0   7540300\n",
            "...                      ...       ...       ...\n",
            "2014-10-13                 0         0  38269400\n",
            "2017-03-09                 1         1  45244200\n",
            "2016-09-20                 0         1  28990900\n",
            "2014-03-24                 1         0  20669500\n",
            "2016-11-07                 1         1  36999200\n",
            "\n",
            "[468 rows x 3 columns]\n",
            "[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n"
          ]
        }
      ],
      "execution_count": 17,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false,
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:54.280Z",
          "iopub.execute_input": "2022-08-21T01:34:54.286Z",
          "iopub.status.idle": "2022-08-21T01:34:54.298Z",
          "shell.execute_reply": "2022-08-21T01:34:54.491Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn import metrics\n",
        "from sklearn.metrics import classification_report\n",
        "\n",
        "print('Accuracy: ', metrics.accuracy_score(y_test, y_pred))\n",
        "print('Recall: ', metrics.recall_score(y_test, y_pred, zero_division=1))\n",
        "print('Precision: ', metrics.precision_score(y_test, y_pred, zero_division=1))\n",
        "print('CL Report: ', metrics.classification_report(y_test, y_pred, zero_division=1))"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Accuracy:  0.5042735042735043\n",
            "Recall:  0.0\n",
            "Precision:  1.0\n",
            "CL Report:                precision    recall  f1-score   support\n",
            "\n",
            "           0       0.50      1.00      0.67       236\n",
            "           1       1.00      0.00      0.00       232\n",
            "\n",
            "    accuracy                           0.50       468\n",
            "   macro avg       0.75      0.50      0.34       468\n",
            "weighted avg       0.75      0.50      0.34       468\n",
            "\n"
          ]
        }
      ],
      "execution_count": 18,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false,
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:54.307Z",
          "iopub.execute_input": "2022-08-21T01:34:54.313Z",
          "iopub.status.idle": "2022-08-21T01:34:54.326Z",
          "shell.execute_reply": "2022-08-21T01:34:54.494Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "y_pred_proba= model.predict_proba(X_test)[::,1]"
      ],
      "outputs": [],
      "execution_count": 19,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:54.335Z",
          "iopub.execute_input": "2022-08-21T01:34:54.341Z",
          "iopub.status.idle": "2022-08-21T01:34:54.350Z",
          "shell.execute_reply": "2022-08-21T01:34:54.498Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "false_positive_rate, true_positive_rate, _ = metrics.roc_curve(y_test, y_pred_proba)"
      ],
      "outputs": [],
      "execution_count": 20,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:54.357Z",
          "iopub.execute_input": "2022-08-21T01:34:54.363Z",
          "iopub.status.idle": "2022-08-21T01:34:54.374Z",
          "shell.execute_reply": "2022-08-21T01:34:54.502Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "auc= metrics.roc_auc_score(y_test, y_pred_proba)"
      ],
      "outputs": [],
      "execution_count": 21,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:54.385Z",
          "iopub.execute_input": "2022-08-21T01:34:54.390Z",
          "iopub.status.idle": "2022-08-21T01:34:54.398Z",
          "shell.execute_reply": "2022-08-21T01:34:54.506Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "plt.plot(false_positive_rate, true_positive_rate,label=\"AUC=\"+str(auc))\n",
        "plt.title('ROC Curve')\n",
        "plt.ylabel('True Positive Rate')\n",
        "plt.xlabel('false Positive Rate')\n",
        "plt.legend(loc=4)"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 22,
          "data": {
            "text/plain": "<matplotlib.legend.Legend at 0x17277a637b8>"
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": "<Figure size 432x288 with 1 Axes>",
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEWCAYAAABrDZDcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAol0lEQVR4nO3de5xVZd338c9X0YgEE1BTEAcRQxAYaRQt85ClKIRZPuAhD3d2m3eZleaj5Z2peZeJd2VmGZmVPh7AI1ieUhE1FdQED6CGckYTURHxBPp7/lhrj5s9e2b2wKyZffi+X6/9Yq21r73Wb80M67ev61rruhQRmJlZ7dqoswMwM7PO5URgZlbjnAjMzGqcE4GZWY1zIjAzq3FOBGZmNc6JwMysxjkRWFWRtEDS25LelPSSpD9L2qygzKcl3SNplaSVkm6RNLigTA9Jv5K0KN3X8+l672aOK0knS3pK0mpJSyRdJ2loludr1h6cCKwafTEiNgPqgV2BH+TekLQncCcwBdgW6A/MBv4haYe0zKbA3cAQYBTQA9gTWAHs3swxLwK+A5wM9AR2Am4GRrc1eEld2voZsw0hP1ls1UTSAuDrEXFXun4BMCQiRqfr9wNPRsQ3Cz53G7A8Io6R9HXgf4ABEfFmCcccCDwD7BkRM5spcy/w/yLisnT9uDTOvdL1AE4Cvgt0AW4HVkfE9/P2MQWYHhG/kLQtcDGwN/Am8MuI+HXrPyGzplwjsKolqS9wEDAvXe8GfBq4rkjxycAX0uXPA7eXkgRS+wNLmksCbfAlYCQwGLgGGC9JAJK2AA4ArpW0EXALSU2mT3r870o6cAOPbzXKicCq0c2SVgGLgZeBH6fbe5L8zb9Y5DMvArn2/17NlGlOW8s352cR8WpEvA3cDwTw2fS9w4CHImIZsBuwZUScGxHvRcQLwB+Aw9shBqtBTgRWjb4UEd2BfYFBfHiBfw34ANimyGe2AV5Jl1c0U6Y5bS3fnMW5hUjabK8Fjkg3HQlclS5vD2wr6fXcC/ghsHU7xGA1yInAqlZETAf+DFyYrq8GHgL+T5Hi40g6iAHuAg6U9LESD3U30FdSQwtlVgPd8tY/USzkgvVrgMMkbU/SZHRDun0xMD8iPp736h4RB5cYr9k6nAis2v0K+IKk4en6GcCx6a2e3SVtIek8kruCzknLXElysb1B0iBJG0nqJemHkppcbCPiX8BvgWsk7StpU0ldJR0u6Yy02Czgy5K6SdoROL61wCPicZJaymXAHRHxevrWTGCVpNMlfVTSxpJ2kbRbm386ZjgRWJWLiOXAFcBZ6foDwIHAl0na9ReS3GK6V3pBJyLeJekwfgb4O/AGycW3NzCjmUOdDPwGuAR4HXgeOJSkUxfgl8B7wL+Bv/BhM09rrk5juTrvnN4HxpDcHjufD5PF5iXu02wdvn3UzKzGuUZgZlbjnAjMzGqcE4GZWY1zIjAzq3EVN7hV7969o66urrPDMDOrKI899tgrEbFlsfcqLhHU1dXx6KOPdnYYZmYVRdLC5t5z05CZWY1zIjAzq3FOBGZmNc6JwMysxjkRmJnVuMwSgaTLJb0s6alm3pekX0uaJ+kJSSOyisXMzJqXZY3gzyQTfzfnIGBg+joB+F2GsZiZWTMySwQRcR/wagtFDgGuiMTDwMcltccsT2ZmVeecW57mnFuezmTfnflAWR/ypuYDlqTbmsz9KukEkloD/fr165DgzMzKyZxlb2S274p4sjgiJgITARoaGjyBgplVratnLGLKrKVNts958Q0Gb9Mjk2N2ZiJYCmyXt9433WZmVhOKXfRnzE9a1Ef277nO9sHb9OCQ+j6ZxNGZiWAqcJKka0km5l4ZEU2ahczMqtWUWUubfNMf2b8nh9T34ciRHdcMnlkikHQNsC/QW9IS4MfAJgARcSlwK3AwMA94C/iPrGIxMytXg7fpwaRv7NmpMWSWCCLiiFbeD+BbWR3fzKxc5ZqEsmz3bws/WWxm1sHyk0BW7f5tURF3DZmZVbLCTuFcEujsJqEc1wjMzDKWqwHklEtNIMc1AjOzdlbuNYBCrhGYmbWzcq8BFHKNwMysHV09YxEz5r/KyP49y7YGUMg1AjOzdpRrEirnGkAh1wjMzNpB/rMBI/v37NAngzeUE4GZWRu1NkZQJdUGwInAzKxFpQ4M1xljBLUXJwIzszyFF/5qu+gX40RgZpancAygarvoF+NEYGaWqsRbP9uDbx81M0tV4q2f7cE1AjOrCc1NAZmvEm/9bA9OBGZWtfIv/s1NAZmv3IeCyIoTgZlVpatnLOKHNz0JJBf/Wuj0XV9OBGZWdfKTwE8PHeqLfyucCMysauSagnLNQE4CpXEiMLOKV5gA3AzUNk4EZlbx8gd7cwJoOycCM6tI+XcElfsMYOXOD5SZWUXKnwWsVm/7bC+uEZhZxanVoSCy4hqBmVWU/FtDXQtoH04EZlZRcv0CvjW0/bhpyMzKXmHHcC2OB5QlJwIzK1vFng9wx3D7cyIws7Ll5wM6hhOBmZWNwqGi/XxAx3BnsZmVjfxnA8DPB3SUTGsEkkYBFwEbA5dFxPkF7/cD/gJ8PC1zRkTcmmVMZlbeXAPoeJklAkkbA5cAXwCWAI9ImhoRc/KK/TcwOSJ+J2kwcCtQl1VMZlZemmsKso6VZdPQ7sC8iHghIt4DrgUOKSgTQO63vjmwLMN4zKzMuCmoPGTZNNQHWJy3vgQYWVDmbOBOSd8GPgZ8vtiOJJ0AnADQr5/vGjCrBh4monx0dmfxEcCfI6IvcDBwpaQmMUXExIhoiIiGLbfcssODNLP2l2sScg2g82VZI1gKbJe33jfdlu94YBRARDwkqSvQG3g5w7jMrJP4CeHylGWN4BFgoKT+kjYFDgemFpRZBOwPIGlnoCuwPMOYzKwTeejo8pRZjSAi1ko6CbiD5NbQyyPiaUnnAo9GxFTgVOAPkr5H0nF8XEREVjGZWefz7aHlJ9PnCNJnAm4t2HZW3vIc4DNZxmBmnavYTGJWXjq7s9jMqpybg8qfxxoys8y5Oai8uUZgZlbjXCMws3bnfoHK4kRgZu0i/+LviWQqixOBmbWLXKfw4G16eCKZCuNEYGbrrVgTkDuFK487i81svfnW0OrgGoGZrRePHlo9XCMws/Xi0UOrR8mJQFK3LAMxs8qRXxtwh3DlazURSPq0pDnAM+n6cEm/zTwyMytLV89YxA9vehJwbaBalFIj+CVwILACICJmA3tnGZSZla9ck9BPDx3q2kCVKKmzOCIWS8rf9H424ZhZOfKEMtWtlESwWNKngZC0CfAdYG62YZlZuchvCvKTwtWplERwInARyWT0S4E7gW9mGZSZda5iw0W4Kah6lZIIPhkRR+VvkPQZ4B/ZhGRmnc3DRdSWUhLBxcCIEraZWRXwg2K1p9lEIGlP4NPAlpJOyXurB8kcxGZWJYo1BbkfoHa0VCPYFNgsLdM9b/sbwGFZBmVmHSOXAPKHjXZTUO1pNhFExHRguqQ/R8TCDozJzDJWLAH44l+7SukjeEvSBGAI0DW3MSI+l1lUZpapXGewE4BBaYngKmASMIbkVtJjgeVZBmVm2fPcAZZTyhATvSLij8CaiJgeEV8DXBswM6sSpSSCNem/L0oaLWlXoGeGMZlZhnK3h5rllNI0dJ6kzYFTSZ4f6AF8N8ugzCw7nkfACrWaCCLir+niSmA/aHyy2MwqjOcRsGJaeqBsY2AcyRhDt0fEU5LGAD8EPgrs2jEhmtn6yn9QDPywmBXXUo3gj8B2wEzg15KWAQ3AGRFxcwfEZmbrodhTwiP792z817eLWqGWEkEDMCwiPpDUFXgJGBARKzomNDMrRXPf+v2UsJWqpUTwXkR8ABAR70h6oa1JQNIokiGsNwYui4jzi5QZB5wNBDA7Io5syzHMalnhXAG5f33xt7ZoKREMkvREuixgQLouICJiWEs7TvsYLgG+ACwBHpE0NSLm5JUZCPwA+ExEvCZpqw04F7Oa42kjrT20lAh23sB97w7Mi4gXACRdCxwCzMkr85/AJRHxGkBEvLyBxzSrGoVNPsV42khrDy0NOrehA831ARbnrS8BRhaU2QlA0j9Imo/OjojbC3ck6QTgBIB+/fwHb9WvWJNPMZ420tpDSZPXZ3z8gcC+QF/gPklDI+L1/EIRMRGYCNDQ0BAdHKNZh3OTj3WkUoaYWF9LSW4/zembbsu3BJgaEWsiYj7wHEliMKt5bvKxjlJSIpD0UUmfbOO+HwEGSuovaVPgcGBqQZmbSWoDSOpN0lT0QhuPY2ZmG6DVRCDpi8As4PZ0vV5S4QW9iYhYC5wE3AHMBSZHxNOSzpU0Ni12B7BC0hxgGnCan1OwWudB4ayjldJHcDbJHUD3AkTELEn9S9l5RNwK3Fqw7ay85QBOSV9mNaW5u4I8DIR1tFISwZqIWCkpf5s7bM02UG6WsMHb9Fhnux8Is45WSiJ4WtKRwMbpA2AnAw9mG5ZZdcsfBdSzhFlnK6Wz+Nsk8xW/C1xNMhz1dzOMyayq5T8j4OYfKwel1AgGRcSZwJlZB2NW7fKTgJ8RsHJRSo3gfyXNlfQTSbtkHpFZFfODYlaOSpmhbD9JnyCZpOb3knoAkyLivMyjM6twhXcGeWwgK0clDTERES+RTE4zDfi/wFmAE4FZES1NDOOxgawctZoIJO0MjAe+AqwAJpFMZG9mqeYu/r4V1CpBKTWCy0ku/gdGxLKM4zGrSPnPBPjib5WmlD4C3+Rs1gI/E2CVrtlEIGlyRIyT9CTrPklc0gxlZrUi1yTktn+rVC3VCL6T/jumIwIxqzS5fgHfCWSVrtnnCCLixXTxmxGxMP8FfLNjwjMrX/n9Aq4NWCUrpbP4C8DpBdsOKrLNrOq0NG9wLgm4X8AqXUt9BP9F8s1/B0lP5L3VHfhH1oGZdYbCC3/hcwD5XBOwatFSjeBq4DbgZ8AZedtXRYRnzbCq0NqF37eCWi1oKRFERCyQ9K3CNyT1dDKwalA4J4Av/FaLWqsRjAEeI7l9NH9mmgB2yDAus8z5/n+zRLOJICLGpP+WNC2lWaXx/f9miVImr/+MpI+ly1+V9AtJrjdbRcuvDbgZyGpdKfMR/A54S9JwksHmngeuzDQqs4y5NmD2oVISwdqICOAQ4DcRcQnJLaRmFcm1AbN1lfJA2SpJPwCOBj4raSNgk2zDMmtfxYaJdm3ALFFKIhgPHAl8LSJeSvsHJmQblln7yZ8n2HMEmDVVyjDUL0m6CthN0hhgZkRckX1oZm1XbEiIXA3A8wSbFVfKDGXjSGoA95I8S3CxpNMi4vqMYzNrVnNjABUbEsI1ALOWldI0dCawW0S8DCBpS+AuwInAOk3hE8E5vuibtV0piWCjXBJIraC0u43MMuWRP83aRymJ4HZJdwDXpOvjgVuzC8nsQ801ARWrDZjZ+imls/g0SV8G9ko3TYyIm7INy2pVqcNAewhos/bT0nwEA4ELgQHAk8D3I6L4DB1mG6DYPf4eBtqs47RUI7gcuAK4D/gicDHw5bbsXNIo4CJgY+CyiDi/mXJfIel83i0iHm3LMazy5Xf8+sJv1vFaSgTdI+IP6fKzkv7Zlh1L2hi4hGSqyyXAI5KmRsScgnLdge8AM9qyf6su7vg16zwtJYKuknblw3kIPpq/HhGtJYbdgXkR8QKApGtJxiuaU1DuJ8DPgdPaGLuZmbWDlhLBi8Av8tZfylsP4HOt7LsPsDhvfQkwMr+ApBHAdhHxN0nNJgJJJwAnAPTr5yaDapHrG/AdQGadq6WJafbL8sDp4HW/AI5rrWxETAQmAjQ0NESWcVl2WrojyHcAmXWeUp4jWF9Lge3y1vum23K6A7sA90oC+AQwVdJYdxhXJ88PbFaeskwEjwADJfUnSQCHk4xiCkBErAR659Yl3Utyi6qTQBVzp7BZ+clsqIiIWAucBNwBzAUmR8TTks6VNDar45qZWduUMvqogKOAHSLi3HQ+gk9ExMzWPhsRt1IwHEVEnNVM2X1LitgqRmGfgDuFzcpTKTWC3wJ7Akek66tIng8wa1ZuMphchzB4WAizclVKH8HIiBgh6XGAiHhN0qYZx2UVLlcT8GQwZuWvlESwJn1KOKBxPoIPMo3KKkqxEULnvPiGJ4c3qxClJIJfAzcBW0n6H+Aw4L8zjcoqQi4BFBsh1M1AZpWjlGGor5L0GLA/yfASX4qIuZlHZmUv91yAnwcwq2yl3DXUD3gLuCV/W0QsyjIwKy/NNf/4uQCzyldK09DfSPoHBHQF+gPPAkMyjMvKSO4OIHDzj1k1KqVpaGj+ejpQ3Dczi8jKSn4S8B1AZtWpzU8Wp8NPj2y1oFUF3wZqVv1K6SM4JW91I2AEsCyziKzT5fcH+DZQs+pXSh9B97zltSR9BjdkE451pGIdwLDu8NDuBzCrfi0mgvRBsu4R8f0Oisc6QEv3/+fWfTuoWe1oNhFI6hIRayV9piMDsmwV3gHkC76ZtVQjmEnSHzBL0lTgOmB17s2IuDHj2Kyd5DcB5WoB7vw1s5xS+gi6AitI5ijOPU8QgBNBmSvWBORagJkVaikRbJXeMfQUHyaAHM8bXAE8BISZlaKlRLAxsBnrJoAcJ4IK4SEgzKw1LSWCFyPi3A6LxNpF4TMAnhHMzFrT0pPFxWoCVuZyzUHgsYDMrDQt1Qj277AorF25OcjM2qLZGkFEvNrce1aerp6xaJ05gs3MStHmQeesPOU/KObmIDNrCyeCKuFRQs1sfTkRVBGPEmpm68OJwMysxpUyxISVsdxzA35mwMzWlxNBhSo2jpA7ic1sfTgRVJBio4h6HCEz21BOBGWolJnDnADMrL04EZSh5tr8ffE3syxkmggkjQIuIhnJ9LKIOL/g/VOAr5PMhbwc+FpELMwypnKXezp4ZP+eHibCzDpEZrePpvMdXwIcBAwGjpA0uKDY40BDRAwDrgcuyCqeSpFrEnLHr5l1lCxrBLsD8yLiBQBJ1wKHAHNyBSJiWl75h4GvZhhPWSrsD8hNJOPmHzPrKFk+UNYHWJy3viTd1pzjgduKvSHpBEmPSnp0+fLl7Rhi58sfNho8dLSZdbyy6CyW9FWgAdin2PsRMRGYCNDQ0FDxs6MVmzzG/QFm1lmyrBEsBbbLW++bbluHpM8DZwJjI+LdDOMpG548xszKSZY1gkeAgZL6kySAw4Ej8wtI2hX4PTAqIl7OMJay41qAmZWLzGoEEbEWOAm4A5gLTI6IpyWdK2lsWmwCsBlwnaRZkqZmFY+ZmRWXaR9BRNwK3Fqw7ay85c9neXwzM2udh6E2M6txTgRmZjWuLG4frXbFHhrz3AFmVi5cI8hYblL53Mih4FtGzay8uEaQMU8qb2blzjWCDOWPJOokYGblyjWCDBROI+lmIDMrZ04E7ai5eYRdGzCzcuZE0E5yncLgBGBmlcWJoJ24U9jMKpUTwQYoHE7ancJmVol819B6Knw+wM8GmFmlco2gjQo7hN0UZGaVzomgRL4jyMyqlRNBiXKzijkBmFm1cSJoA88qZmbVyJ3FZmY1zonAzKzGORGYmdU4JwIzsxrnzuJW5G4b9axiZlatnAhakZ8E/ORw7VizZg1LlizhnXfe6exQzNqka9eu9O3bl0022aTkzzgRNKOwJuDbRmvLkiVL6N69O3V1dUjq7HDMShIRrFixgiVLltC/f/+SP+c+gma4JlDb3nnnHXr16uUkYBVFEr169WpzTdY1AtYdRTTHNQFzErBKtD5/tzWdCIqNH5TjmoCZ1YqabRrKH0Z6ZP+e/PTQoUz6xp7rvDyekHW2m2++GUk888wzANx7772MGTNmnTLHHXcc119/PZB0cp9xxhkMHDiQESNGsOeee3LbbbeVdKx3332X8ePHs+OOOzJy5EgWLFhQtFxdXR1Dhw6lvr6ehoaGxu0/+tGPGDZsGPX19RxwwAEsW7YMgAkTJlBfX099fT277LILG2+8Ma+++irPPvts4/b6+np69OjBr371qxb3NWXKlMbtDQ0NPPDAAwBMmzZtnX117dqVm2++GYC7776bESNGUF9fz1577cW8efMAuO+++xgxYgRdunRp/Pnle+ONN+jbty8nnXRS47YzzzyT7bbbjs0226zoz+aGG25AEo8++igAM2fObIxp+PDh3HTTTQAtnvv48eMbt9fV1VFfX9+4/yeeeII999yTIUOGMHTo0Pa7mSEiKur1qU99KtrDuEsfjO1P/2tc9fDCdtmfVZc5c+Z0dggRETFu3LjYa6+94qyzzoqIiGnTpsXo0aPXKXPsscfGddddFxERp59+ehxzzDHxzjvvRETESy+9FJMmTSrpWJdcckl84xvfiIiIa665JsaNG1e03Pbbbx/Lly9vsn3lypWNyxdddFHjvvJNnTo19ttvvybb165dG1tvvXUsWLCgxX2tWrUqPvjgg4iImD17dnzyk59ssq8VK1bEFltsEatXr46IiIEDBzb+Pi+55JI49thjIyJi/vz5MXv27Dj66KMbf375Tj755DjiiCPiW9/6VuO2hx56KJYtWxYf+9jHmpR/44034rOf/WyMHDkyHnnkkYiIWL16daxZsyYiIpYtWxZbbrll43pz557vlFNOiXPOOSciItasWRNDhw6NWbNmRUTEK6+8EmvXrm3ymYjif7/Ao9HMdbVmmoYK+wE8o5iV6pxbnmbOsjfadZ+Dt+3Bj784pMUyb775Jg888ADTpk3ji1/8Iuecc06L5d966y3+8Ic/MH/+fD7ykY8AsPXWWzNu3LiSYpoyZQpnn302AIcddhgnnXQSEVFym3OPHh8+Z7N69eqin7vmmms44ogjmmy/++67GTBgANtvv32L+8r/Jt7cMa6//noOOuggunXrBiRt5m+8kfz+Vq5cybbbbgskNRuAjTZq2jDy2GOP8e9//5tRo0Y1frsH2GOPPZo5+6QWc/rppzNhwoTGbbkYILkBoVi8heeeExFMnjyZe+65B4A777yTYcOGMXz4cAB69erVbCxtVTNNQ7m7gHLcB2DlbsqUKYwaNYqddtqJXr168dhjj7VYft68efTr12+di2i+/CaH/NcVV1wBwNKlS9luu+0A6NKlC5tvvjkrVqxosh9JHHDAAXzqU59i4sSJ67yXazq56qqrOPfcc9d576233uL222/nK1/5SpN9XnvttU0SRHP7uummmxg0aBCjR4/m8ssvb3Vfl112GQcffDB9+/blyiuv5Iwzzij688n54IMPOPXUU7nwwgtbLJfvn//8J4sXL2b06NFN3psxY0ZjU86ll15Kly7rfv8udu4A999/P1tvvTUDBw4E4LnnnkMSBx54ICNGjOCCCy4oOb5WNVdVKNfX+jYNjbv0wRh36YPr9VmrPeXQNDR69Oi48847IyJpHjn11FPj3nvvLdo0dP3118fs2bOjvr5+vY83ZMiQWLx4ceP6DjvsULQJaMmSJRER8e9//zuGDRsW06dPb1Lmpz/9aWNzVs61114bY8aMaVL23XffjV69esVLL71UNK5i+4qImD59euy///7rbFu2bFn07t073nvvvcZthx56aDz88MMREXHBBRfE8ccfv85n8pvWIiIuvvji+PnPfx4REX/605/WaRrKyW8aev/992OfffaJ+fPnR0TEPvvs09g0lG/OnDmx2267xdtvv13SuZ944olx4YUXNq5PmDAh6urqYvny5bF69erYY4894q677mryudyxCtFC01CmNQJJoyQ9K2mepCZpWNJHJE1K358hqS7LeMwqxauvvso999zD17/+derq6pgwYQKTJ0+mZ8+evPbaa03K9u7dmx133JFFixY1NoMUaq1G0KdPHxYvXgzA2rVrWblyZdHmhz59kpr0VlttxaGHHsrMmTOblDnqqKO44YYb1tnW3Dff2267jREjRrD11lsXjbvYvgD23ntvXnjhBV555ZXGbZMnT+bQQw9tfKp2+fLlzJ49m5EjRzb+DB588MGix8l56KGH+M1vfkNdXR3f//73ueKKK1qsRaxatYqnnnqKfffdl7q6Oh5++GHGjh27TpMSwM4778xmm23GU0891eq5r127lhtvvJHx48c3buvbty977703vXv3plu3bhx88MH885//bPFcSpVZIpC0MXAJcBAwGDhC0uCCYscDr0XEjsAvgZ9nFY9ZJbn++us5+uijWbhwIQsWLGDx4sX079+fV199lWXLljF37lwAFi5cyOzZs6mvr6dbt24cf/zxfOc73+G9994DkgvhddddB8CkSZOYNWtWk9cxxxwDwNixY/nLX/7SePzPfe5zTdq0V69ezapVqxqX77zzTnbZZRcA/vWvfzWWmzJlCoMGDWpcX7lyJdOnT+eQQw5pcq7F+g2a29e8efNIvtwmzTHvvvvuOsmqcF9bbLEFK1eu5LnnngPg73//OzvvvHNLP3quuuoqFi1axIIFC7jwwgs55phjOP/885stv/nmm/PKK6+wYMECFixYwB577MHUqVNpaGhg/vz5rF27Fkh+V88880xj30Rz5w5w1113MWjQIPr27du47cADD+TJJ5/krbfeYu3atUyfPp3BgwsvqeupuarChr6APYE78tZ/APygoMwdwJ7pchfgFUAt7ddNQ9YROrtpaN99943bbrttnW0XXXRRnHjiifHAAw/EyJEjY/jw4dHQ0NDYfBSRNDWcdtppMWDAgBgyZEjsvvvucfvtt5d0zLfffjsOO+ywGDBgQOy2227x/PPPR0TE0qVL46CDDoqIiOeffz6GDRsWw4YNi8GDB8d5553X+Pkvf/nLMWTIkBg6dGiMGTOm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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ],
      "execution_count": 22,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-08-21T01:34:54.407Z",
          "iopub.execute_input": "2022-08-21T01:34:54.412Z",
          "iopub.status.idle": "2022-08-21T01:34:54.427Z",
          "shell.execute_reply": "2022-08-21T01:34:54.510Z"
        }
      }
    }
  ],
  "metadata": {
    "kernel_info": {
      "name": "python3"
    },
    "language_info": {
      "name": "python",
      "version": "3.6.13",
      "mimetype": "text/x-python",
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "pygments_lexer": "ipython3",
      "nbconvert_exporter": "python",
      "file_extension": ".py"
    },
    "kernelspec": {
      "name": "python3",
      "language": "python",
      "display_name": "Python 3"
    },
    "nteract": {
      "version": "0.28.0"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}